' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.10.26.02.14]) on 2023.11.04 at 17:15 (Coordinated Universal Time)
_TITLE "BAM Draw"
' Program by Charlie Veniot

DIM 🖥w% = 0, 🖥h% = 0

🔁drawing_cycle:
  GOSUB ♻do_refresh
  temp$ = INKEY$
  IF temp$ <> "" THEN brush$ = temp$
  IF _MOUSEBUTTON AND BETWEEN(_MOUSEX,0,XMAX) AND BETWEEN(_MOUSEY, 0, YMAX - 16) THEN  _
     x% = _MOUSEX :     _
     y% = _MOUSEY :     _
     GOSUB 🎨do_brush_stroke
  
  GOTO 🔁drawing_cycle


END

🔳do_grid:
  IF MAX(1, GetLocalStorageItem( "draw:grid" ) ) THEN
     FOR i = 0 TO xMAX STEP 8
  	     LINE (i,0) TO (i,(yMAX-16)), 7
     NEXT i
     FOR i = 7 TO (yMAX-16) STEP 8
         LINE (0,i) TO (xMAX,i), 7
       NEXT i
  END IF     
  RETURN
  
🎨do_brush_stroke:
  new_y = FIX(y%/8)+1 : new_x = FIX(x%/8)+1
  f_color = 15 : b_color = 0
  LOCATE new_y, new_x : PRINT brush$;
  GOSUB 🔳do_grid
  SetLocalStorageItem( "draw:stroke:" + new_y + "," + new_x, brush$ + " " + f_color + "," + b_color)
  RETURN
  
📐do_canvas_resize:
  IF 🖥w% <> MAX(64, GetLocalStorageItem( "draw:width" ) * 8 )    _
     OR 🖥h% <> MAX(64, GetLocalStorageItem( "draw:height" ) *8 ) _
    THEN
      LET 🖥w% = MAX(64, GetLocalStorageItem( "draw:width" ) * 8 )
      LET 🖥h% = MAX(64, GetLocalStorageItem( "draw:height" ) * 8 )
      SCREEN _NEWIMAGE( 🖥w%, 🖥h%, 7 )
      GOSUB 🔳do_grid
  END IF
  RETURN
  
♻do_refresh:
  GOSUB 📐do_canvas_resize
RETURN